package com.seur.modelo;

import org.apache.log4j.Logger;
import com.seur.ldap.objetos.Entrada;
import com.seur.ldap.objetos.Atributo;
import com.seur.ldap.LDAPManager;
import com.seur.ldap.SEURLdap;
import com.seur.ldap.error.SEURLdapException;
import com.seur.util.GestorProperties;
import com.seur.error.ExcepcionGeneral;
import com.seur.error.Excepcion;

import java.util.Map;
import java.util.Set;
import java.util.Iterator;

/**
 * Created by IntelliJ IDEA.
 * User: Eco
 * Date: 17-jun-2009
 * Time: 14:09:21
 * To change this template use File | Settings | File Templates.
 */

/**
  * Esta clase representa una entidad genrica "Actor" dentro del arbol ldap
 */
public abstract class ActorSEURLdap {

    private static Logger trazador = Logger.getLogger(Usuario.class.getName());
    private static Entrada entrada;

    public static Entrada getEntrada() {
        return entrada;
    }

    public static void setEntrada(Entrada entrada) {
        ActorSEURLdap.entrada = entrada;
    }

    /**
     * Este metodo crea un nuevo actor en el arbol ldap
     * recibe un java.util.Map con sus atributos
     */
    public static void crearActor(Map listaAtrNuevoActor){

        try {

            Set set = listaAtrNuevoActor.entrySet();
            Iterator itlistaNuevoActor = set.iterator();
            Atributo atributo;

            while(itlistaNuevoActor.hasNext()){
                Map.Entry entry = (Map.Entry) itlistaNuevoActor.next();
                atributo = new Atributo((String)entry.getKey());
                atributo.addValor((String)entry.getValue());
                entrada.addAtributo(atributo);
            }

            LDAPManager ldap = SEURLdap.getManager(GestorProperties.dameValor("ldap.conexion"));
            ldap.crearEntrada(entrada);


        } catch (SEURLdapException e) {
            trazador.error("ActorSEURLdap:creaActor() Se ha producido un error al crear el actor, excepcion:" + e);
        } catch (ExcepcionGeneral excepcionGeneral) {
            trazador.error("ActorSEURLdap:creaActor() Se ha producido un error al crear el actor, excepcion:" + excepcionGeneral);
        } catch (Excepcion excepcion) {
            trazador.error("ActorSEURLdap:creaActor() Se ha producido un error al crear el actor, excepcion:" + excepcion);
        }
    }

}
